home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / docs / asm / main.c < prev    next >
C/C++ Source or Header  |  2000-05-08  |  1KB  |  63 lines

  1. #include <stdio.h>
  2. #include <iocslib.h>
  3.  
  4. int optime(void op_main(void), void op_init(int count), void op_tini(void), int count);
  5. void op_main(void);
  6. void op_init(int count);
  7. void op_tini(void);
  8. extern char op_name[];
  9.  
  10. int ssp;
  11.  
  12. void main(int argc, char *argv[])
  13. {
  14.   double mpu_clock = 10.0;
  15.   int count = 1000;
  16.   int result;
  17.   double each_microsec;
  18.   double each_clock;
  19.  
  20.   if (B_BPEEK((void *)0x00e8e00b) == 0xdc) {
  21.     /* X68030 */
  22.     if (B_BPEEK((void *)0x0cbc) == 0x06) {
  23.       /* 060turbo */
  24.       mpu_clock = 50.0;
  25.     } else {
  26.       /* X68030/040turbo */
  27.       mpu_clock = 25.0;
  28.     }
  29.   } else if (B_BPEEK((void *)0x00e8e00b) == 0xfe) {
  30.     /* X68000 16MHz */
  31.     mpu_clock = 16.667;
  32.   } else {
  33.     /* X68000 10MHz */
  34.     mpu_clock = 10.0;
  35.   }
  36.  
  37.   switch (argc) {
  38.   case 3:
  39.     sscanf(argv[2], "%lf", &mpu_clock);
  40.   case 2:
  41.     sscanf(argv[1], "%d", &count);
  42.     break;
  43.   default:
  44.     fprintf(stderr, "使用法: %s ループ回数 [MPU_CLOCK(MHz)]\n", op_name);
  45.     return;
  46.   }
  47.  
  48.   ssp = B_SUPER(0);
  49.   result = optime(op_main, op_init, op_tini, count);
  50.   B_SUPER(ssp);
  51.  
  52.   if (result == -1) {
  53.     fprintf(stderr, "%s: Timer-Dが使用中です\n", op_name);
  54.     return;
  55.   }
  56.  
  57.   each_microsec = result / (double)count;
  58.   each_clock = each_microsec * mpu_clock;
  59.  
  60.   printf("[%s]  total=%d(μs)  count=%d  each=%.4g(μs)  each=%.4g(clock/%.4gMHz)\n",
  61.          op_name, result, count, each_microsec, each_clock, mpu_clock);
  62. }
  63.